AWS AppSyncのID自動生成でUUIDの代わりにULIDを生成してみた

AWS AppSyncのID自動生成でUUIDの代わりにULIDを生成してみた

Clock Icon2022.01.29

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

ども、ゲストブロガーのNTT東日本 大瀧です。 AWS AppSyncのユーティリティーヘルパーにULID(Universally unique Lexicographically Sortable Identifier)を自動生成する$util.autoUlid()が最近追加されたので、試してみた様子をレポートします。

AppSync provides a set of built-in utility helpers which can be used within a GraphQL resolver to simplify interactions with data sources. We recently released support to autogenerate ULIDs, for instance. What other resolver utils would you like to see? https://t.co/M7gZddh94A

— Ed Lima (@ednergizer) January 28, 2022

ULIDとは

ULIDはUUIDと互換性のある、時系列でソート可能な識別子です。仕様と各言語の対応はGitHubで公開されています。

Pythonで操作する様子は、以下の記事がわかりやすいです。

タイムスタンプが含まれているので、例えばDynamoDBと連携するときにソートキーにすると捗りそうです。

試してみた

というわけで早速やってみましょう。DynamoDBテーブルのインポートから作成されるマッピングテンプレートではミューテーションでUUIDを自動生成する$util.autoId()を利用しているので、これを差し替えてみます。

{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoId()),
  },
  :(以下略)
{
  "version": "2017-02-28",
  "operation": "PutItem",
  "key": {
    "id": $util.dynamodb.toDynamoDBJson($util.autoUlid()),
  },
  :(以下略)

クエリエクスプローラでミューテーションを試してみると...

あっさり取れました!やったね!

まとめ

AWS AppSyncのID自動生成でUUIDの代わりにULIDの取得を試してみました。組み込みでかゆいところに対応できるのは嬉しいですね!

参考URL

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.